package top.jiangqiang.qianyi.generator.model;

import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import lombok.Builder;
import lombok.Data;
import lombok.Value;
import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.SystemUtil;
import org.jetbrains.annotations.NotNull;

import java.util.Map;
import java.util.function.BiConsumer;
import java.util.function.Function;

@Builder
@Data
@Value
public class CustomFileConfig {
    /**
     * 生成文件名的方法
     */
    @NotNull("自定义文件名不能为空")
    Function<TableInfo, String> formatNameFunction;
    /**
     * 模板路径
     */
    @NotNull("自定义模板路径不能为空")
    String templatePath;
    /**
     * 文件路径
     */
    @Builder.Default
    String filePath = StrUtil.replace(SystemUtil.get("user.dir"), "\\", "/")+ "/generated/custom";
    /**
     * 是否生成文件
     */
    @Builder.Default
    boolean generateFile = true;
    /**
     * 是否覆盖已有文件（默认 false）
     */
    @Builder.Default
    boolean fileOverride = false;
    /**
     * 父类class
     */
    Class<?> superClass;
    /**
     * 用于隔离每个自定义文件的特有参数，防止参数名冲突
     * 如果不传，默认为customFile｛index｝
     * ｛index｝为自定义文件的顺序，从1开始
     */
    String namespace;
    /**
     * 额外参数
     */
    BiConsumer<Map<String, Object>, TableInfo> extParamsFunction;
}
